package com.cx.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author cx
 * @description: 分布式锁注解
 * @date 2023/7/28 9:10
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DistributedLockAnnotation {

    /**
     * 锁key值
     */
    String key() default "";

    /**
     * 锁过期时间 s 默认一天
     */
    long expirationTime() default 24 * 60 * 60;

    /**
     * 加锁失败后重试次数 0不重试
     */
    int lockRetryCount() default 0;

    /**
     * 解锁失败后重试次数 0不重试 默认10次
     */
    int unlockRetryCount() default 10;

    /**
     * lockRetryCount>0有效 加锁失败后重试等待时间 ms
     */
    long lockRetryInterval() default 0;

}
